home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Canvas;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.image.CropImageFilter;
- import java.awt.image.FilteredImageSource;
- import java.awt.image.ImageObserver;
- import java.net.URL;
- import java.util.Random;
-
- public class BannerCanvas2 extends Canvas implements Runnable {
- Thread appThread;
- Image osImage;
- Graphics osg;
- Applet theApplet;
- int currentX;
- int currentY;
- int currentWidth;
- int currentHeight;
- Image[] images;
- URL[] urls;
- int interval = 1000;
- int movementInterval;
- int delayTime = 250;
- int movementIncrement;
- Random randomizer = new Random();
- boolean waitingBetweenModes = false;
- int prevImage = -1;
- int currImage = -1;
- int currMode = -1;
- boolean currModeFinished = false;
- static final int firstMoveMode = 0;
- static final int lastMoveMode = 7;
- static final int firstSplitMode = 8;
- static final int lastSplitMode = 10;
- Image[][] centerSplitBothImages;
- int centerSplitBothImageCount;
- Image[][] centerSplitVertImages;
- int centerSplitVertImageCount;
- Image[][] centerSplitHorizImages;
- int centerSplitHorizImageCount;
- static final int MODE_MOVE_DOWN = 0;
- static final int MODE_MOVE_UP = 1;
- static final int MODE_MOVE_LEFT = 2;
- static final int MODE_MOVE_RIGHT = 3;
- static final int MODE_MOVE_NORTHWEST = 4;
- static final int MODE_MOVE_NORTHEAST = 5;
- static final int MODE_MOVE_SOUTHWEST = 6;
- static final int MODE_MOVE_SOUTHEAST = 7;
- static final int MODE_SPLIT_CENTER_BOTH = 8;
- static final int MODE_SPLIT_CENTER_VERT = 9;
- static final int MODE_SPLIT_CENTER_HORIZ = 10;
- static final int numModes = 11;
- Color bkColor;
- Image bkImage;
-
- public BannerCanvas2(Applet var1, int var2) {
- this.theApplet = var1;
- this.GetParameters(var1, var2);
- }
-
- void GetParameters(Applet var1, int var2) {
- String var3 = var1.getParameter("bannerImageList" + var2);
- if (var3 != null) {
- var3 = var1.getParameter("bannerImageStrip" + var2);
- boolean var4 = AppletParam2.GetBoolean(var3, false);
- if (var4) {
- var3 = var1.getParameter("bannerImageWidth" + var2);
- int var5 = AppletParam2.GetInt(var3, 100);
- var3 = var1.getParameter("bannerImageList" + var2);
- this.images = AppletParam2.GetImageStrip(var1, var3, var5);
- } else {
- var3 = var1.getParameter("bannerImageList" + var2);
- this.images = AppletParam2.GetImageList(var1, var3);
- }
- }
-
- var3 = var1.getParameter("bannerInterval" + var2);
- this.interval = AppletParam2.GetInt(var3, 5000);
- var3 = var1.getParameter("bannerMovementInterval" + var2);
- this.movementInterval = AppletParam2.GetInt(var3, 500);
- var3 = var1.getParameter("bannerMovementIncrement" + var2);
- this.movementIncrement = AppletParam2.GetInt(var3, 2);
- var3 = var1.getParameter("bannerUrlList" + var2);
- if (var3 != null) {
- this.urls = AppletParam2.GetURLList(var3);
- }
-
- var3 = var1.getParameter("bannerBkColor" + var2);
- this.bkColor = AppletParam2.GetColor(var3, (Color)null);
- if (this.bkColor != null) {
- ((Component)this).setBackground(this.bkColor);
- }
-
- }
-
- public void Start() {
- this.appThread = new Thread(this);
- this.appThread.start();
- }
-
- public void Stop() {
- this.appThread.stop();
- this.appThread = null;
- }
-
- public void update(Graphics var1) {
- if (this.osImage == null) {
- this.osImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
- this.osg = this.osImage.getGraphics();
- }
-
- if (this.bkImage != null) {
- int var2 = this.bkImage.getWidth(this);
- int var3 = this.bkImage.getHeight(this);
- int var4 = ((Component)this).size().width / var2;
- int var5 = ((Component)this).size().height / var3;
- ++var4;
- ++var5;
-
- for(int var6 = 0; var6 < var5; ++var6) {
- for(int var7 = 0; var7 < var4; ++var7) {
- this.osg.drawImage(this.bkImage, var7 * var2, var6 * var3, this);
- }
- }
- }
-
- if (!this.waitingBetweenModes) {
- if (this.prevImage == -1) {
- this.osg.setColor(((Component)this).getBackground());
- this.osg.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- }
-
- if (!this.currModeFinished) {
- if (this.IsMoveMode()) {
- this.osg.setColor(((Component)this).getBackground());
- this.osg.fillRect(this.currentX, this.currentY, ((Component)this).size().width, ((Component)this).size().height);
- this.osg.drawImage(this.images[this.currImage], this.currentX, this.currentY, ((Component)this).size().width, ((Component)this).size().height, ((Component)this).getBackground(), this);
- } else if (this.IsSplitMode()) {
- switch (this.currMode) {
- case 8:
- int var12 = this.currentX;
- int var20 = this.currentY;
- int var29 = ((Component)this).size().width / 2;
- int var38 = ((Component)this).size().height / 2;
- this.osg.drawImage(this.centerSplitBothImages[this.currImage][0], var12, var20, var29, var38, ((Component)this).getBackground(), this);
- var12 = ((Component)this).size().width / 2 - this.currentX;
- var20 = this.currentY;
- var29 = ((Component)this).size().width / 2;
- var38 = ((Component)this).size().height / 2;
- this.osg.drawImage(this.centerSplitBothImages[this.currImage][1], var12, var20, var29, var38, ((Component)this).getBackground(), this);
- var12 = this.currentX;
- var20 = ((Component)this).size().height / 2 - this.currentY;
- var29 = ((Component)this).size().width / 2;
- var38 = ((Component)this).size().height / 2;
- this.osg.drawImage(this.centerSplitBothImages[this.currImage][2], var12, var20, var29, var38, ((Component)this).getBackground(), this);
- var12 = ((Component)this).size().width / 2 - this.currentX;
- var20 = ((Component)this).size().height / 2 - this.currentY;
- var29 = ((Component)this).size().width / 2;
- var38 = ((Component)this).size().height / 2;
- this.osg.drawImage(this.centerSplitBothImages[this.currImage][3], var12, var20, var29, var38, ((Component)this).getBackground(), this);
- break;
- case 9:
- int var10 = this.currentX;
- int var18 = this.currentY;
- int var27 = ((Component)this).size().width / 2;
- int var36 = ((Component)this).size().height;
- this.osg.drawImage(this.centerSplitVertImages[this.currImage][0], var10, var18, var27, var36, ((Component)this).getBackground(), this);
- var10 = ((Component)this).size().width / 2 - this.currentX;
- var18 = this.currentY;
- var27 = ((Component)this).size().width / 2;
- var36 = ((Component)this).size().height;
- this.osg.drawImage(this.centerSplitVertImages[this.currImage][1], var10, var18, var27, var36, ((Component)this).getBackground(), this);
- break;
- case 10:
- int var8 = this.currentX;
- int var16 = this.currentY;
- int var25 = ((Component)this).size().width;
- int var34 = ((Component)this).size().height / 2;
- this.osg.drawImage(this.centerSplitHorizImages[this.currImage][0], var8, var16, var25, var34, ((Component)this).getBackground(), this);
- var8 = this.currentX;
- var16 = ((Component)this).size().height / 2 - this.currentY;
- var25 = ((Component)this).size().width;
- var34 = ((Component)this).size().height / 2;
- this.osg.drawImage(this.centerSplitHorizImages[this.currImage][1], var8, var16, var25, var34, ((Component)this).getBackground(), this);
- }
- }
- }
- }
-
- var1.drawImage(this.osImage, 0, 0, this);
- }
-
- public void run() {
- while(true) {
- if (this.appThread.isAlive()) {
- try {
- ((Component)this).repaint();
- if (!this.waitingBetweenModes) {
- if (!this.currModeFinished) {
- this.UpdateMode();
- if (this.currModeFinished) {
- this.waitingBetweenModes = true;
- this.delayTime = this.interval;
- }
- }
- } else {
- this.waitingBetweenModes = false;
- this.SetNewMode();
- }
-
- Thread.sleep((long)this.delayTime);
- } catch (InterruptedException var1) {
- }
- }
- }
- }
-
- void UpdateMode() {
- switch (this.currMode) {
- case 0:
- if (this.currentY >= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentY += this.movementIncrement;
- if (this.currentY >= 0) {
- this.currentY = 0;
- return;
- }
- break;
- case 1:
- if (this.currentY <= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentY -= this.movementIncrement;
- if (this.currentY < 0) {
- this.currentY = 0;
- return;
- }
- break;
- case 2:
- if (this.currentX <= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentX -= this.movementIncrement;
- if (this.currentX < 0) {
- this.currentX = 0;
- return;
- }
- break;
- case 3:
- if (this.currentX >= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentX += this.movementIncrement;
- if (this.currentX > 0) {
- this.currentX = 0;
- return;
- }
- break;
- case 4:
- if (this.currentX <= 0 && this.currentY <= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentX -= this.movementIncrement;
- this.currentY -= this.movementIncrement;
- if (this.currentX < 0 || this.currentY < 0) {
- this.currentX = 0;
- this.currentY = 0;
- }
-
- return;
- case 5:
- if (this.currentX >= 0 && this.currentY <= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentX += this.movementIncrement;
- this.currentY -= this.movementIncrement;
- if (this.currentX > 0 || this.currentY < 0) {
- this.currentX = 0;
- this.currentY = 0;
- }
-
- return;
- case 6:
- if (this.currentX <= 0 && this.currentY >= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentX -= this.movementIncrement;
- this.currentY += this.movementIncrement;
- if (this.currentX < 0 || this.currentY > 0) {
- this.currentX = 0;
- this.currentY = 0;
- }
-
- return;
- case 7:
- if (this.currentX >= 0 && this.currentY >= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentX += this.movementIncrement;
- this.currentY += this.movementIncrement;
- if (this.currentX > 0 || this.currentY > 0) {
- this.currentX = 0;
- this.currentY = 0;
- }
-
- return;
- case 8:
- if (this.currentX >= 0 && this.currentY >= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentX += this.movementIncrement;
- this.currentY += this.movementIncrement;
- if (this.currentX > 0 || this.currentY > 0) {
- this.currentX = 0;
- this.currentY = 0;
- }
-
- return;
- case 9:
- if (this.currentX >= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentX += this.movementIncrement;
- if (this.currentX > 0) {
- this.currentX = 0;
- return;
- }
- break;
- case 10:
- if (this.currentY >= 0) {
- this.currModeFinished = true;
- return;
- }
-
- this.currentY += this.movementIncrement;
- if (this.currentY > 0) {
- this.currentY = 0;
- return;
- }
- }
-
- }
-
- void SetNewMode() {
- this.currMode = Math.abs(this.randomizer.nextInt()) % 11;
- this.prevImage = this.currImage++;
- if (this.currImage >= this.images.length) {
- this.currImage = 0;
- }
-
- this.delayTime = this.movementInterval;
- this.currModeFinished = false;
- switch (this.currMode) {
- case 0:
- this.currentX = 0;
- this.currentY = -((Component)this).size().height;
- return;
- case 1:
- this.currentX = 0;
- this.currentY = ((Component)this).size().height;
- return;
- case 2:
- this.currentX = ((Component)this).size().width;
- this.currentY = 0;
- return;
- case 3:
- this.currentX = -((Component)this).size().width;
- this.currentY = 0;
- return;
- case 4:
- this.currentX = ((Component)this).size().height;
- this.currentY = ((Component)this).size().height;
- return;
- case 5:
- this.currentX = -((Component)this).size().height;
- this.currentY = ((Component)this).size().height;
- return;
- case 6:
- this.currentX = ((Component)this).size().height;
- this.currentY = -((Component)this).size().height;
- return;
- case 7:
- this.currentX = -((Component)this).size().height;
- this.currentY = -((Component)this).size().height;
- return;
- case 8:
- this.currentX = -(((Component)this).size().height / 2);
- this.currentY = -(((Component)this).size().height / 2);
- return;
- case 9:
- this.currentX = -(((Component)this).size().width / 2);
- this.currentY = 0;
- return;
- case 10:
- this.currentX = 0;
- this.currentY = -(((Component)this).size().height / 2);
- return;
- default:
- }
- }
-
- boolean IsMoveMode() {
- return this.currMode >= 0 && this.currMode <= 7;
- }
-
- boolean IsSplitMode() {
- return this.currMode >= 8 && this.currMode <= 10;
- }
-
- void BuildCenterSplitBothImages() {
- this.centerSplitBothImageCount = this.images.length * 4;
- this.centerSplitBothImages = new Image[this.images.length][4];
-
- for(int var1 = 0; var1 < this.images.length; ++var1) {
- Image var2 = this.images[var1];
- int var3 = var2.getWidth((ImageObserver)null);
- int var4 = var2.getHeight((ImageObserver)null);
- CropImageFilter var5 = new CropImageFilter(0, 0, var3 / 2, var4 / 2);
- this.centerSplitBothImages[var1][0] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var5));
- CropImageFilter var6 = new CropImageFilter(var3 / 2, 0, var3 / 2, var4 / 2);
- this.centerSplitBothImages[var1][1] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var6));
- CropImageFilter var7 = new CropImageFilter(0, var4 / 2, var3 / 2, var4 / 2);
- this.centerSplitBothImages[var1][2] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var7));
- CropImageFilter var8 = new CropImageFilter(var3 / 2, var4 / 2, var3 / 2, var4 / 2);
- this.centerSplitBothImages[var1][3] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var8));
- }
-
- }
-
- void BuildCenterSplitVertImages() {
- this.centerSplitVertImageCount = this.images.length * 2;
- this.centerSplitVertImages = new Image[this.images.length][2];
-
- for(int var1 = 0; var1 < this.images.length; ++var1) {
- Image var2 = this.images[var1];
- int var3 = var2.getWidth((ImageObserver)null);
- int var4 = var2.getHeight((ImageObserver)null);
- CropImageFilter var5 = new CropImageFilter(0, 0, var3 / 2, var4);
- this.centerSplitVertImages[var1][0] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var5));
- CropImageFilter var6 = new CropImageFilter(var3 / 2, 0, var3 / 2, var4);
- this.centerSplitVertImages[var1][1] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var6));
- }
-
- }
-
- void BuildCenterSplitHorizImages() {
- this.centerSplitHorizImageCount = this.images.length * 2;
- this.centerSplitHorizImages = new Image[this.images.length][2];
-
- for(int var1 = 0; var1 < this.images.length; ++var1) {
- Image var2 = this.images[var1];
- int var3 = var2.getWidth((ImageObserver)null);
- int var4 = var2.getHeight((ImageObserver)null);
- CropImageFilter var5 = new CropImageFilter(0, 0, var3, var4 / 2);
- this.centerSplitHorizImages[var1][0] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var5));
- CropImageFilter var6 = new CropImageFilter(0, var4 / 2, var3, var4 / 2);
- this.centerSplitHorizImages[var1][1] = ((Component)this).createImage(new FilteredImageSource(this.images[var1].getSource(), var6));
- }
-
- }
-
- public boolean mouseEnter(Event var1, int var2, int var3) {
- if (this.currImage != -1 && this.urls != null && this.currImage < this.urls.length && this.urls[this.currImage] != null) {
- this.theApplet.showStatus(this.urls[this.currImage].toString());
- return true;
- } else {
- return false;
- }
- }
-
- public boolean mouseExit(Event var1, int var2, int var3) {
- if (this.currImage != -1 && this.urls != null && this.currImage < this.urls.length && this.urls[this.currImage] != null) {
- this.theApplet.showStatus("");
- return true;
- } else {
- return false;
- }
- }
-
- public boolean mouseDown(Event var1, int var2, int var3) {
- if (this.currImage != -1 && this.urls != null && this.currImage < this.urls.length && this.urls[this.currImage] != null) {
- this.theApplet.getAppletContext().showDocument(this.urls[this.currImage]);
- return true;
- } else {
- return false;
- }
- }
-
- public Dimension minimumSize() {
- return new Dimension(10, 10);
- }
-
- public Dimension preferredSize() {
- return new Dimension(10, 10);
- }
-
- public synchronized void reshape(int var1, int var2, int var3, int var4) {
- super.reshape(var1, var2, var3, var4);
- this.osImage = null;
- this.osg = null;
- this.SetNewMode();
- this.BuildCenterSplitBothImages();
- this.BuildCenterSplitVertImages();
- this.BuildCenterSplitHorizImages();
- }
- }
-